package com.qkjia.oauth2client.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * Description:在接口上配置权限时使用
 *
 * @author JourWon
 * @date 2019/12/24 16:24
 *
 * oauth2-client添加权限校验
 * 添加配置开启基于方法的权限校验：
 *
 */
//3、@EnableGlobalMethodSecurity详解
//
//3.1、@EnableGlobalMethodSecurity(securedEnabled=true)
//         开启@Secured 注解过滤权限
//
//        3.2、@EnableGlobalMethodSecurity(jsr250Enabled=true)
//
//          开启@RolesAllowed 注解过滤权限
//
//        3.3、@EnableGlobalMethodSecurity(prePostEnabled=true)
//         使用表达式时间方法级别的安全性 4个注解可用
//
//@PreAuthorize 在方法调用之前,基于表达式的计算结果来限制对方法的访问
//@PostAuthorize 允许方法调用,但是如果表达式计算结果为false,将抛出一个安全性异常
//@PostFilter 允许方法调用,但必须按照表达式来过滤方法的结果
//@PreFilter 允许方法调用,但必须在进入方法之前过滤输入值
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Order(101)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
